<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /Users/paulross/dev/linux/linux-3.13/include/linux/hrtimer.h</title>
  </head>
  <body>
    <h1>File: /Users/paulross/dev/linux/linux-3.13/include/linux/hrtimer.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/*</span>
<a name="2" /><span class="True">       2:</span> <span class="k"> *  include/linux/hrtimer.h</span>
<a name="3" /><span class="True">       3:</span> <span class="k"> *</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> *  hrtimers - High-resolution kernel timers</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> *</span>
<a name="6" /><span class="True">       6:</span> <span class="k"> *   Copyright(C) 2005, Thomas Gleixner &lt;tglx@linutronix.de&gt;</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> *   Copyright(C) 2005, Red Hat, Inc., Ingo Molnar</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> *</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> *  data type definitions, declarations, prototypes</span>
<a name="10" /><span class="True">      10:</span> <span class="k"> *</span>
<a name="11" /><span class="True">      11:</span> <span class="k"> *  Started by: Thomas Gleixner and Ingo Molnar</span>
<a name="12" /><span class="True">      12:</span> <span class="k"> *</span>
<a name="13" /><span class="True">      13:</span> <span class="k"> *  For licencing details see kernel-base/COPYING</span>
<a name="14" /><span class="True">      14:</span> <span class="k"> */</span>
<a name="15" /><span class="True">      15:</span> <span class="f">#</span><span class="n">ifndef</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX0hSVElNRVJfSF8w"><span class="b">_LINUX_HRTIMER_H</span></a>
<a name="16" /><span class="True">      16:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_X0xJTlVYX0hSVElNRVJfSF8w"><span class="b">_LINUX_HRTIMER_H</span></a>
<a name="17" /><span class="True">      17:</span> 
<a name="18" /><span class="True">      18:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">rbtree</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="19" /><span class="True">      19:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">ktime</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="20" /><span class="True">      20:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">init</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="21" /><span class="True">      21:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">list</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="22" /><span class="True">      22:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">wait</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="23" /><span class="True">      23:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">percpu</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="24" /><span class="True">      24:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">timer</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="25" /><span class="True">      25:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">linux</span><span class="f">/</span><span class="b">timerqueue</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="26" /><span class="True">      26:</span> 
<a name="27" /><span class="True">      27:</span> <span class="m">struct</span> <span class="b">hrtimer_clock_base</span><span class="f">;</span>
<a name="28" /><span class="True">      28:</span> <span class="m">struct</span> <span class="b">hrtimer_cpu_base</span><span class="f">;</span>
<a name="29" /><span class="True">      29:</span> 
<a name="30" /><span class="True">      30:</span> <span class="k">/*</span>
<a name="31" /><span class="True">      31:</span> <span class="k"> * Mode arguments of xxx_hrtimer functions:</span>
<a name="32" /><span class="True">      32:</span> <span class="k"> */</span>
<a name="33" /><span class="True">      33:</span> <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="f">{</span>
<a name="34" /><span class="True">      34:</span>     <span class="b">HRTIMER_MODE_ABS</span> <span class="f">=</span> <span class="c">0x0</span><span class="f">,</span>        <span class="k">/* Time value is absolute */</span>
<a name="35" /><span class="True">      35:</span>     <span class="b">HRTIMER_MODE_REL</span> <span class="f">=</span> <span class="c">0x1</span><span class="f">,</span>        <span class="k">/* Time value is relative to now */</span>
<a name="36" /><span class="True">      36:</span>     <span class="b">HRTIMER_MODE_PINNED</span> <span class="f">=</span> <span class="c">0x02</span><span class="f">,</span>    <span class="k">/* Timer is bound to CPU */</span>
<a name="37" /><span class="True">      37:</span>     <span class="b">HRTIMER_MODE_ABS_PINNED</span> <span class="f">=</span> <span class="c">0x02</span><span class="f">,</span>
<a name="38" /><span class="True">      38:</span>     <span class="b">HRTIMER_MODE_REL_PINNED</span> <span class="f">=</span> <span class="c">0x03</span><span class="f">,</span>
<a name="39" /><span class="True">      39:</span> <span class="f">}</span><span class="f">;</span>
<a name="40" /><span class="True">      40:</span> 
<a name="41" /><span class="True">      41:</span> <span class="k">/*</span>
<a name="42" /><span class="True">      42:</span> <span class="k"> * Return values for the callback function</span>
<a name="43" /><span class="True">      43:</span> <span class="k"> */</span>
<a name="44" /><span class="True">      44:</span> <span class="m">enum</span> <span class="b">hrtimer_restart</span> <span class="f">{</span>
<a name="45" /><span class="True">      45:</span>     <span class="b">HRTIMER_NORESTART</span><span class="f">,</span>    <span class="k">/* Timer is not restarted */</span>
<a name="46" /><span class="True">      46:</span>     <span class="b">HRTIMER_RESTART</span><span class="f">,</span>    <span class="k">/* Timer must be restarted */</span>
<a name="47" /><span class="True">      47:</span> <span class="f">}</span><span class="f">;</span>
<a name="48" /><span class="True">      48:</span> 
<a name="49" /><span class="True">      49:</span> <span class="k">/*</span>
<a name="50" /><span class="True">      50:</span> <span class="k"> * Values to track state of the timer</span>
<a name="51" /><span class="True">      51:</span> <span class="k"> *</span>
<a name="52" /><span class="True">      52:</span> <span class="k"> * Possible states:</span>
<a name="53" /><span class="True">      53:</span> <span class="k"> *</span>
<a name="54" /><span class="True">      54:</span> <span class="k"> * 0x00        inactive</span>
<a name="55" /><span class="True">      55:</span> <span class="k"> * 0x01        enqueued into rbtree</span>
<a name="56" /><span class="True">      56:</span> <span class="k"> * 0x02        callback function running</span>
<a name="57" /><span class="True">      57:</span> <span class="k"> * 0x04        timer is migrated to another cpu</span>
<a name="58" /><span class="True">      58:</span> <span class="k"> *</span>
<a name="59" /><span class="True">      59:</span> <span class="k"> * Special cases:</span>
<a name="60" /><span class="True">      60:</span> <span class="k"> * 0x03        callback function running and enqueued</span>
<a name="61" /><span class="True">      61:</span> <span class="k"> *        (was requeued on another CPU)</span>
<a name="62" /><span class="True">      62:</span> <span class="k"> * 0x05        timer was migrated on CPU hotunplug</span>
<a name="63" /><span class="True">      63:</span> <span class="k"> *</span>
<a name="64" /><span class="True">      64:</span> <span class="k"> * The &quot;callback function running and enqueued&quot; status is only possible on</span>
<a name="65" /><span class="True">      65:</span> <span class="k"> * SMP. It happens for example when a posix timer expired and the callback</span>
<a name="66" /><span class="True">      66:</span> <span class="k"> * queued a signal. Between dropping the lock which protects the posix timer</span>
<a name="67" /><span class="True">      67:</span> <span class="k"> * and reacquiring the base lock of the hrtimer, another CPU can deliver the</span>
<a name="68" /><span class="True">      68:</span> <span class="k"> * signal and rearm the timer. We have to preserve the callback running state,</span>
<a name="69" /><span class="True">      69:</span> <span class="k"> * as otherwise the timer could be removed before the softirq code finishes the</span>
<a name="70" /><span class="True">      70:</span> <span class="k"> * the handling of the timer.</span>
<a name="71" /><span class="True">      71:</span> <span class="k"> *</span>
<a name="72" /><span class="True">      72:</span> <span class="k"> * The HRTIMER_STATE_ENQUEUED bit is always or&apos;ed to the current state</span>
<a name="73" /><span class="True">      73:</span> <span class="k"> * to preserve the HRTIMER_STATE_CALLBACK in the above scenario. This</span>
<a name="74" /><span class="True">      74:</span> <span class="k"> * also affects HRTIMER_STATE_MIGRATE where the preservation is not</span>
<a name="75" /><span class="True">      75:</span> <span class="k"> * necessary. HRTIMER_STATE_MIGRATE is cleared after the timer is</span>
<a name="76" /><span class="True">      76:</span> <span class="k"> * enqueued on the new cpu.</span>
<a name="77" /><span class="True">      77:</span> <span class="k"> *</span>
<a name="78" /><span class="True">      78:</span> <span class="k"> * All state transitions are protected by cpu_base-&gt;lock.</span>
<a name="79" /><span class="True">      79:</span> <span class="k"> */</span>
<a name="80" /><span class="True">      80:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_SFJUSU1FUl9TVEFURV9JTkFDVElWRV8w"><span class="b">HRTIMER_STATE_INACTIVE</span></a>    <span class="c">0x00</span>
<a name="81" /><span class="True">      81:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_SFJUSU1FUl9TVEFURV9FTlFVRVVFRF8w"><span class="b">HRTIMER_STATE_ENQUEUED</span></a>    <span class="c">0x01</span>
<a name="82" /><span class="True">      82:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_ref.html#_SFJUSU1FUl9TVEFURV9DQUxMQkFDS18w"><span class="b">HRTIMER_STATE_CALLBACK</span></a>    <span class="c">0x02</span>
<a name="83" /><span class="True">      83:</span> <span class="f">#</span><span class="n">define</span> <a href="cpu.c_macros_noref.html#_SFJUSU1FUl9TVEFURV9NSUdSQVRFXzA_"><span class="b">HRTIMER_STATE_MIGRATE</span></a>    <span class="c">0x04</span>
<a name="84" /><span class="True">      84:</span> 
<a name="85" /><span class="True">      85:</span> <span class="k">/**</span>
<a name="86" /><span class="True">      86:</span> <span class="k"> * struct hrtimer - the basic hrtimer structure</span>
<a name="87" /><span class="True">      87:</span> <span class="k"> * @node:    timerqueue node, which also manages node.expires,</span>
<a name="88" /><span class="True">      88:</span> <span class="k"> *        the absolute expiry time in the hrtimers internal</span>
<a name="89" /><span class="True">      89:</span> <span class="k"> *        representation. The time is related to the clock on</span>
<a name="90" /><span class="True">      90:</span> <span class="k"> *        which the timer is based. Is setup by adding</span>
<a name="91" /><span class="True">      91:</span> <span class="k"> *        slack to the _softexpires value. For non range timers</span>
<a name="92" /><span class="True">      92:</span> <span class="k"> *        identical to _softexpires.</span>
<a name="93" /><span class="True">      93:</span> <span class="k"> * @_softexpires: the absolute earliest expiry time of the hrtimer.</span>
<a name="94" /><span class="True">      94:</span> <span class="k"> *        The time which was given as expiry time when the timer</span>
<a name="95" /><span class="True">      95:</span> <span class="k"> *        was armed.</span>
<a name="96" /><span class="True">      96:</span> <span class="k"> * @function:    timer expiry callback function</span>
<a name="97" /><span class="True">      97:</span> <span class="k"> * @base:    pointer to the timer base (per cpu and per clock)</span>
<a name="98" /><span class="True">      98:</span> <span class="k"> * @state:    state information (See bit values above)</span>
<a name="99" /><span class="True">      99:</span> <span class="k"> * @start_site:    timer statistics field to store the site where the timer</span>
<a name="100" /><span class="True">     100:</span> <span class="k"> *        was started</span>
<a name="101" /><span class="True">     101:</span> <span class="k"> * @start_comm: timer statistics field to store the name of the process which</span>
<a name="102" /><span class="True">     102:</span> <span class="k"> *        started the timer</span>
<a name="103" /><span class="True">     103:</span> <span class="k"> * @start_pid: timer statistics field to store the pid of the task which</span>
<a name="104" /><span class="True">     104:</span> <span class="k"> *        started the timer</span>
<a name="105" /><span class="True">     105:</span> <span class="k"> *</span>
<a name="106" /><span class="True">     106:</span> <span class="k"> * The hrtimer structure must be initialized by hrtimer_init()</span>
<a name="107" /><span class="True">     107:</span> <span class="k"> */</span>
<a name="108" /><span class="True">     108:</span> <span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">{</span>
<a name="109" /><span class="True">     109:</span>     <span class="m">struct</span> <span class="b">timerqueue_node</span>        <span class="b">node</span><span class="f">;</span>
<a name="110" /><span class="True">     110:</span>     <span class="b">ktime_t</span>                <span class="b">_softexpires</span><span class="f">;</span>
<a name="111" /><span class="True">     111:</span>     <span class="m">enum</span> <span class="b">hrtimer_restart</span>        <span class="f">(</span><span class="f">*</span><span class="b">function</span><span class="f">)</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="112" /><span class="True">     112:</span>     <span class="m">struct</span> <span class="b">hrtimer_clock_base</span>    <span class="f">*</span><span class="b">base</span><span class="f">;</span>
<a name="113" /><span class="True">     113:</span>     <span class="m">unsigned</span> <span class="m">long</span>            <span class="b">state</span><span class="f">;</span>
<a name="114" /><span class="True">     114:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1RJTUVSX1NUQVRTXzA_"><span class="b">CONFIG_TIMER_STATS</span></a>
<a name="115" /><span class="True">     115:</span>     <span class="m">int</span>                <span class="b">start_pid</span><span class="f">;</span>
<a name="116" /><span class="True">     116:</span>     <span class="m">void</span>                <span class="f">*</span><span class="b">start_site</span><span class="f">;</span>
<a name="117" /><span class="True">     117:</span>     <span class="m">char</span>                <span class="b">start_comm</span><span class="f">[</span><span class="c">16</span><span class="f">]</span><span class="f">;</span>
<a name="118" /><span class="True">     118:</span> <span class="f">#</span><span class="n">endif</span>
<a name="119" /><span class="True">     119:</span> <span class="f">}</span><span class="f">;</span>
<a name="120" /><span class="True">     120:</span> 
<a name="121" /><span class="True">     121:</span> <span class="k">/**</span>
<a name="122" /><span class="True">     122:</span> <span class="k"> * struct hrtimer_sleeper - simple sleeper structure</span>
<a name="123" /><span class="True">     123:</span> <span class="k"> * @timer:    embedded timer structure</span>
<a name="124" /><span class="True">     124:</span> <span class="k"> * @task:    task to wake up</span>
<a name="125" /><span class="True">     125:</span> <span class="k"> *</span>
<a name="126" /><span class="True">     126:</span> <span class="k"> * task is set to NULL, when the timer expires.</span>
<a name="127" /><span class="True">     127:</span> <span class="k"> */</span>
<a name="128" /><span class="True">     128:</span> <span class="m">struct</span> <span class="b">hrtimer_sleeper</span> <span class="f">{</span>
<a name="129" /><span class="True">     129:</span>     <span class="m">struct</span> <span class="b">hrtimer</span> <span class="b">timer</span><span class="f">;</span>
<a name="130" /><span class="True">     130:</span>     <span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">task</span><span class="f">;</span>
<a name="131" /><span class="True">     131:</span> <span class="f">}</span><span class="f">;</span>
<a name="132" /><span class="True">     132:</span> 
<a name="133" /><span class="True">     133:</span> <span class="k">/**</span>
<a name="134" /><span class="True">     134:</span> <span class="k"> * struct hrtimer_clock_base - the timer base for a specific clock</span>
<a name="135" /><span class="True">     135:</span> <span class="k"> * @cpu_base:        per cpu clock base</span>
<a name="136" /><span class="True">     136:</span> <span class="k"> * @index:        clock type index for per_cpu support when moving a</span>
<a name="137" /><span class="True">     137:</span> <span class="k"> *            timer to a base on another cpu.</span>
<a name="138" /><span class="True">     138:</span> <span class="k"> * @clockid:        clock id for per_cpu support</span>
<a name="139" /><span class="True">     139:</span> <span class="k"> * @active:        red black tree root node for the active timers</span>
<a name="140" /><span class="True">     140:</span> <span class="k"> * @resolution:        the resolution of the clock, in nanoseconds</span>
<a name="141" /><span class="True">     141:</span> <span class="k"> * @get_time:        function to retrieve the current time of the clock</span>
<a name="142" /><span class="True">     142:</span> <span class="k"> * @softirq_time:    the time when running the hrtimer queue in the softirq</span>
<a name="143" /><span class="True">     143:</span> <span class="k"> * @offset:        offset of this clock to the monotonic base</span>
<a name="144" /><span class="True">     144:</span> <span class="k"> */</span>
<a name="145" /><span class="True">     145:</span> <span class="m">struct</span> <span class="b">hrtimer_clock_base</span> <span class="f">{</span>
<a name="146" /><span class="True">     146:</span>     <span class="m">struct</span> <span class="b">hrtimer_cpu_base</span>    <span class="f">*</span><span class="b">cpu_base</span><span class="f">;</span>
<a name="147" /><span class="True">     147:</span>     <span class="m">int</span>            <span class="b">index</span><span class="f">;</span>
<a name="148" /><span class="True">     148:</span>     <span class="b">clockid_t</span>        <span class="b">clockid</span><span class="f">;</span>
<a name="149" /><span class="True">     149:</span>     <span class="m">struct</span> <span class="b">timerqueue_head</span>    <span class="b">active</span><span class="f">;</span>
<a name="150" /><span class="True">     150:</span>     <span class="b">ktime_t</span>            <span class="b">resolution</span><span class="f">;</span>
<a name="151" /><span class="True">     151:</span>     <span class="b">ktime_t</span>            <span class="f">(</span><span class="f">*</span><span class="b">get_time</span><span class="f">)</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="152" /><span class="True">     152:</span>     <span class="b">ktime_t</span>            <span class="b">softirq_time</span><span class="f">;</span>
<a name="153" /><span class="True">     153:</span>     <span class="b">ktime_t</span>            <span class="b">offset</span><span class="f">;</span>
<a name="154" /><span class="True">     154:</span> <span class="f">}</span><span class="f">;</span>
<a name="155" /><span class="True">     155:</span> 
<a name="156" /><span class="True">     156:</span> <span class="m">enum</span>  <span class="b">hrtimer_base_type</span> <span class="f">{</span>
<a name="157" /><span class="True">     157:</span>     <span class="b">HRTIMER_BASE_MONOTONIC</span><span class="f">,</span>
<a name="158" /><span class="True">     158:</span>     <span class="b">HRTIMER_BASE_REALTIME</span><span class="f">,</span>
<a name="159" /><span class="True">     159:</span>     <span class="b">HRTIMER_BASE_BOOTTIME</span><span class="f">,</span>
<a name="160" /><span class="True">     160:</span>     <span class="b">HRTIMER_BASE_TAI</span><span class="f">,</span>
<a name="161" /><span class="True">     161:</span>     <span class="b">HRTIMER_MAX_CLOCK_BASES</span><span class="f">,</span>
<a name="162" /><span class="True">     162:</span> <span class="f">}</span><span class="f">;</span>
<a name="163" /><span class="True">     163:</span> 
<a name="164" /><span class="True">     164:</span> <span class="k">/*</span>
<a name="165" /><span class="True">     165:</span> <span class="k"> * struct hrtimer_cpu_base - the per cpu clock bases</span>
<a name="166" /><span class="True">     166:</span> <span class="k"> * @lock:        lock protecting the base and associated clock bases</span>
<a name="167" /><span class="True">     167:</span> <span class="k"> *            and timers</span>
<a name="168" /><span class="True">     168:</span> <span class="k"> * @active_bases:    Bitfield to mark bases with active timers</span>
<a name="169" /><span class="True">     169:</span> <span class="k"> * @clock_was_set:    Indicates that clock was set from irq context.</span>
<a name="170" /><span class="True">     170:</span> <span class="k"> * @expires_next:    absolute time of the next event which was scheduled</span>
<a name="171" /><span class="True">     171:</span> <span class="k"> *            via clock_set_next_event()</span>
<a name="172" /><span class="True">     172:</span> <span class="k"> * @hres_active:    State of high resolution mode</span>
<a name="173" /><span class="True">     173:</span> <span class="k"> * @hang_detected:    The last hrtimer interrupt detected a hang</span>
<a name="174" /><span class="True">     174:</span> <span class="k"> * @nr_events:        Total number of hrtimer interrupt events</span>
<a name="175" /><span class="True">     175:</span> <span class="k"> * @nr_retries:        Total number of hrtimer interrupt retries</span>
<a name="176" /><span class="True">     176:</span> <span class="k"> * @nr_hangs:        Total number of hrtimer interrupt hangs</span>
<a name="177" /><span class="True">     177:</span> <span class="k"> * @max_hang_time:    Maximum time spent in hrtimer_interrupt</span>
<a name="178" /><span class="True">     178:</span> <span class="k"> * @clock_base:        array of clock bases for this cpu</span>
<a name="179" /><span class="True">     179:</span> <span class="k"> */</span>
<a name="180" /><span class="True">     180:</span> <span class="m">struct</span> <span class="b">hrtimer_cpu_base</span> <span class="f">{</span>
<a name="181" /><span class="True">     181:</span>     <span class="b">raw_spinlock_t</span>            <span class="b">lock</span><span class="f">;</span>
<a name="182" /><span class="True">     182:</span>     <span class="m">unsigned</span> <span class="m">int</span>            <span class="b">active_bases</span><span class="f">;</span>
<a name="183" /><span class="True">     183:</span>     <span class="m">unsigned</span> <span class="m">int</span>            <span class="b">clock_was_set</span><span class="f">;</span>
<a name="184" /><span class="True">     184:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0hJR0hfUkVTX1RJTUVSU18w"><span class="b">CONFIG_HIGH_RES_TIMERS</span></a>
<a name="185" /><span class="True">     185:</span>     <span class="b">ktime_t</span>                <span class="b">expires_next</span><span class="f">;</span>
<a name="186" /><span class="True">     186:</span>     <span class="m">int</span>                <span class="b">hres_active</span><span class="f">;</span>
<a name="187" /><span class="True">     187:</span>     <span class="m">int</span>                <span class="b">hang_detected</span><span class="f">;</span>
<a name="188" /><span class="True">     188:</span>     <span class="m">unsigned</span> <span class="m">long</span>            <span class="b">nr_events</span><span class="f">;</span>
<a name="189" /><span class="True">     189:</span>     <span class="m">unsigned</span> <span class="m">long</span>            <span class="b">nr_retries</span><span class="f">;</span>
<a name="190" /><span class="True">     190:</span>     <span class="m">unsigned</span> <span class="m">long</span>            <span class="b">nr_hangs</span><span class="f">;</span>
<a name="191" /><span class="True">     191:</span>     <span class="b">ktime_t</span>                <span class="b">max_hang_time</span><span class="f">;</span>
<a name="192" /><span class="True">     192:</span> <span class="f">#</span><span class="n">endif</span>
<a name="193" /><span class="True">     193:</span>     <span class="m">struct</span> <span class="b">hrtimer_clock_base</span>    <span class="b">clock_base</span><span class="f">[</span><span class="b">HRTIMER_MAX_CLOCK_BASES</span><span class="f">]</span><span class="f">;</span>
<a name="194" /><span class="True">     194:</span> <span class="f">}</span><span class="f">;</span>
<a name="195" /><span class="True">     195:</span> 
<a name="196" /><span class="True">     196:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">hrtimer_set_expires</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="b">time</span><span class="f">)</span>
<a name="197" /><span class="True">     197:</span> <span class="f">{</span>
<a name="198" /><span class="True">     198:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span> <span class="f">=</span> <span class="b">time</span><span class="f">;</span>
<a name="199" /><span class="True">     199:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">_softexpires</span> <span class="f">=</span> <span class="b">time</span><span class="f">;</span>
<a name="200" /><span class="True">     200:</span> <span class="f">}</span>
<a name="201" /><span class="True">     201:</span> 
<a name="202" /><span class="True">     202:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">hrtimer_set_expires_range</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="b">time</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="b">delta</span><span class="f">)</span>
<a name="203" /><span class="True">     203:</span> <span class="f">{</span>
<a name="204" /><span class="True">     204:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">_softexpires</span> <span class="f">=</span> <span class="b">time</span><span class="f">;</span>
<a name="205" /><span class="True">     205:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span> <span class="f">=</span> <span class="b">ktime_add_safe</span><span class="f">(</span><span class="b">time</span><span class="f">,</span> <span class="b">delta</span><span class="f">)</span><span class="f">;</span>
<a name="206" /><span class="True">     206:</span> <span class="f">}</span>
<a name="207" /><span class="True">     207:</span> 
<a name="208" /><span class="True">     208:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">hrtimer_set_expires_range_ns</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="b">time</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">delta</span><span class="f">)</span>
<a name="209" /><span class="True">     209:</span> <span class="f">{</span>
<a name="210" /><span class="True">     210:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">_softexpires</span> <span class="f">=</span> <span class="b">time</span><span class="f">;</span>
<a name="211" /><span class="True">     211:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span> <span class="f">=</span> <span class="b">ktime_add_safe</span><span class="f">(</span><span class="b">time</span><span class="f">,</span> <span class="b">ns_to_ktime</span><span class="f">(</span><span class="b">delta</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="212" /><span class="True">     212:</span> <span class="f">}</span>
<a name="213" /><span class="True">     213:</span> 
<a name="214" /><span class="True">     214:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">hrtimer_set_expires_tv64</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">s64</span> <span class="b">tv64</span><span class="f">)</span>
<a name="215" /><span class="True">     215:</span> <span class="f">{</span>
<a name="216" /><span class="True">     216:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span><span class="f">.</span><span class="b">tv64</span> <span class="f">=</span> <span class="b">tv64</span><span class="f">;</span>
<a name="217" /><span class="True">     217:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">_softexpires</span><span class="f">.</span><span class="b">tv64</span> <span class="f">=</span> <span class="b">tv64</span><span class="f">;</span>
<a name="218" /><span class="True">     218:</span> <span class="f">}</span>
<a name="219" /><span class="True">     219:</span> 
<a name="220" /><span class="True">     220:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">hrtimer_add_expires</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="b">time</span><span class="f">)</span>
<a name="221" /><span class="True">     221:</span> <span class="f">{</span>
<a name="222" /><span class="True">     222:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span> <span class="f">=</span> <span class="b">ktime_add_safe</span><span class="f">(</span><span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span><span class="f">,</span> <span class="b">time</span><span class="f">)</span><span class="f">;</span>
<a name="223" /><span class="True">     223:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">_softexpires</span> <span class="f">=</span> <span class="b">ktime_add_safe</span><span class="f">(</span><span class="b">timer</span><span class="f">-&gt;</span><span class="b">_softexpires</span><span class="f">,</span> <span class="b">time</span><span class="f">)</span><span class="f">;</span>
<a name="224" /><span class="True">     224:</span> <span class="f">}</span>
<a name="225" /><span class="True">     225:</span> 
<a name="226" /><span class="True">     226:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">hrtimer_add_expires_ns</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">u64</span> <span class="b">ns</span><span class="f">)</span>
<a name="227" /><span class="True">     227:</span> <span class="f">{</span>
<a name="228" /><span class="True">     228:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_a3RpbWVfYWRkX25zXzA_"><span class="b">ktime_add_ns</span></a><span class="f">(</span><span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span><span class="f">,</span> <span class="b">ns</span><span class="f">)</span><span class="f">;</span>
<a name="229" /><span class="True">     229:</span>     <span class="b">timer</span><span class="f">-&gt;</span><span class="b">_softexpires</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_a3RpbWVfYWRkX25zXzA_"><span class="b">ktime_add_ns</span></a><span class="f">(</span><span class="b">timer</span><span class="f">-&gt;</span><span class="b">_softexpires</span><span class="f">,</span> <span class="b">ns</span><span class="f">)</span><span class="f">;</span>
<a name="230" /><span class="True">     230:</span> <span class="f">}</span>
<a name="231" /><span class="True">     231:</span> 
<a name="232" /><span class="True">     232:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">ktime_t</span> <span class="b">hrtimer_get_expires</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="233" /><span class="True">     233:</span> <span class="f">{</span>
<a name="234" /><span class="True">     234:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span><span class="f">;</span>
<a name="235" /><span class="True">     235:</span> <span class="f">}</span>
<a name="236" /><span class="True">     236:</span> 
<a name="237" /><span class="True">     237:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">ktime_t</span> <span class="b">hrtimer_get_softexpires</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="238" /><span class="True">     238:</span> <span class="f">{</span>
<a name="239" /><span class="True">     239:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">_softexpires</span><span class="f">;</span>
<a name="240" /><span class="True">     240:</span> <span class="f">}</span>
<a name="241" /><span class="True">     241:</span> 
<a name="242" /><span class="True">     242:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">hrtimer_get_expires_tv64</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="243" /><span class="True">     243:</span> <span class="f">{</span>
<a name="244" /><span class="True">     244:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span><span class="f">.</span><span class="b">tv64</span><span class="f">;</span>
<a name="245" /><span class="True">     245:</span> <span class="f">}</span>
<a name="246" /><span class="True">     246:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">hrtimer_get_softexpires_tv64</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="247" /><span class="True">     247:</span> <span class="f">{</span>
<a name="248" /><span class="True">     248:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">_softexpires</span><span class="f">.</span><span class="b">tv64</span><span class="f">;</span>
<a name="249" /><span class="True">     249:</span> <span class="f">}</span>
<a name="250" /><span class="True">     250:</span> 
<a name="251" /><span class="True">     251:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">s64</span> <span class="b">hrtimer_get_expires_ns</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="252" /><span class="True">     252:</span> <span class="f">{</span>
<a name="253" /><span class="True">     253:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_a3RpbWVfdG9fbnNfMA__"><span class="b">ktime_to_ns</span></a><span class="f">(</span><span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span><span class="f">)</span><span class="f">;</span>
<a name="254" /><span class="True">     254:</span> <span class="f">}</span>
<a name="255" /><span class="True">     255:</span> 
<a name="256" /><span class="True">     256:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">ktime_t</span> <span class="b">hrtimer_expires_remaining</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="257" /><span class="True">     257:</span> <span class="f">{</span>
<a name="258" /><span class="True">     258:</span>     <span class="m">return</span> <a href="cpu.c_macros_ref.html#_a3RpbWVfc3ViXzA_"><span class="b">ktime_sub</span></a><span class="f">(</span><span class="b">timer</span><span class="f">-&gt;</span><span class="b">node</span><span class="f">.</span><span class="b">expires</span><span class="f">,</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">base</span><span class="f">-&gt;</span><span class="b">get_time</span><span class="f">(</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="259" /><span class="True">     259:</span> <span class="f">}</span>
<a name="260" /><span class="True">     260:</span> 
<a name="261" /><span class="True">     261:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX0hJR0hfUkVTX1RJTUVSU18w"><span class="b">CONFIG_HIGH_RES_TIMERS</span></a>
<a name="262" /><span class="True">     262:</span> <span class="m">struct</span> <span class="b">clock_event_device</span><span class="f">;</span>
<a name="263" /><span class="True">     263:</span> 
<a name="264" /><span class="True">     264:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">hrtimer_interrupt</span><span class="f">(</span><span class="m">struct</span> <span class="b">clock_event_device</span> <span class="f">*</span><span class="b">dev</span><span class="f">)</span><span class="f">;</span>
<a name="265" /><span class="True">     265:</span> 
<a name="266" /><span class="True">     266:</span> <span class="k">/*</span>
<a name="267" /><span class="True">     267:</span> <span class="k"> * In high resolution mode the time reference must be read accurate</span>
<a name="268" /><span class="True">     268:</span> <span class="k"> */</span>
<a name="269" /><span class="True">     269:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">ktime_t</span> <span class="b">hrtimer_cb_get_time</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="270" /><span class="True">     270:</span> <span class="f">{</span>
<a name="271" /><span class="True">     271:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">base</span><span class="f">-&gt;</span><span class="b">get_time</span><span class="f">(</span><span class="f">)</span><span class="f">;</span>
<a name="272" /><span class="True">     272:</span> <span class="f">}</span>
<a name="273" /><span class="True">     273:</span> 
<a name="274" /><span class="True">     274:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">hrtimer_is_hres_active</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="275" /><span class="True">     275:</span> <span class="f">{</span>
<a name="276" /><span class="True">     276:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">base</span><span class="f">-&gt;</span><span class="b">cpu_base</span><span class="f">-&gt;</span><span class="b">hres_active</span><span class="f">;</span>
<a name="277" /><span class="True">     277:</span> <span class="f">}</span>
<a name="278" /><span class="True">     278:</span> 
<a name="279" /><span class="True">     279:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">hrtimer_peek_ahead_timers</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="280" /><span class="True">     280:</span> 
<a name="281" /><span class="True">     281:</span> <span class="k">/*</span>
<a name="282" /><span class="True">     282:</span> <span class="k"> * The resolution of the clocks. The resolution value is returned in</span>
<a name="283" /><span class="True">     283:</span> <span class="k"> * the clock_getres() system call to give application programmers an</span>
<a name="284" /><span class="True">     284:</span> <span class="k"> * idea of the (in)accuracy of timers. Timer values are rounded up to</span>
<a name="285" /><span class="True">     285:</span> <span class="k"> * this resolution values.</span>
<a name="286" /><span class="True">     286:</span> <span class="k"> */</span>
<a name="287" /><span class="True">     287:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_SElHSF9SRVNfTlNFQ18w"><span class="b">HIGH_RES_NSEC</span></a>        <span class="c">1</span>
<a name="288" /><span class="True">     288:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_S1RJTUVfSElHSF9SRVNfMA__"><span class="b">KTIME_HIGH_RES</span></a>        <span class="f">(</span><span class="b">ktime_t</span><span class="f">)</span> <span class="f">{</span> <span class="f">.</span><span class="b">tv64</span> <span class="f">=</span> <a href="cpu.c_macros_noref.html#_SElHSF9SRVNfTlNFQ18w"><span class="b">HIGH_RES_NSEC</span></a> <span class="f">}</span>
<a name="289" /><span class="True">     289:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_TU9OT1RPTklDX1JFU19OU0VDXzA_"><span class="b">MONOTONIC_RES_NSEC</span></a>    <a href="cpu.c_macros_noref.html#_SElHSF9SRVNfTlNFQ18w"><span class="b">HIGH_RES_NSEC</span></a>
<a name="290" /><span class="True">     290:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_S1RJTUVfTU9OT1RPTklDX1JFU18w"><span class="b">KTIME_MONOTONIC_RES</span></a>    <a href="cpu.c_macros_noref.html#_S1RJTUVfSElHSF9SRVNfMA__"><span class="b">KTIME_HIGH_RES</span></a>
<a name="291" /><span class="True">     291:</span> 
<a name="292" /><span class="True">     292:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">clock_was_set_delayed</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="293" /><span class="True">     293:</span> 
<a name="294" /><span class="False">     294:</span> <span class="f">#</span><span class="n">else</span>
<a name="295" /><span class="False">     295:</span> 
<a name="296" /><span class="False">     296:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_TU9OT1RPTklDX1JFU19OU0VDXzA_"><span class="b">MONOTONIC_RES_NSEC</span></a>    <a href="cpu.c_macros_noref.html#_TE9XX1JFU19OU0VDXzA_"><span class="b">LOW_RES_NSEC</span></a>
<a name="297" /><span class="False">     297:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_S1RJTUVfTU9OT1RPTklDX1JFU18w"><span class="b">KTIME_MONOTONIC_RES</span></a>    <a href="cpu.c_macros_noref.html#_S1RJTUVfTE9XX1JFU18w"><span class="b">KTIME_LOW_RES</span></a>
<a name="298" /><span class="False">     298:</span> 
<a name="299" /><span class="False">     299:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">hrtimer_peek_ahead_timers</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="300" /><span class="False">     300:</span> 
<a name="301" /><span class="False">     301:</span> <span class="k">/*</span>
<a name="302" /><span class="False">     302:</span> <span class="k"> * In non high resolution mode the time reference is taken from</span>
<a name="303" /><span class="False">     303:</span> <span class="k"> * the base softirq time variable.</span>
<a name="304" /><span class="False">     304:</span> <span class="k"> */</span>
<a name="305" /><span class="False">     305:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">ktime_t</span> <span class="b">hrtimer_cb_get_time</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="306" /><span class="False">     306:</span> <span class="f">{</span>
<a name="307" /><span class="False">     307:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">base</span><span class="f">-&gt;</span><span class="b">softirq_time</span><span class="f">;</span>
<a name="308" /><span class="False">     308:</span> <span class="f">}</span>
<a name="309" /><span class="False">     309:</span> 
<a name="310" /><span class="False">     310:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">hrtimer_is_hres_active</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="311" /><span class="False">     311:</span> <span class="f">{</span>
<a name="312" /><span class="False">     312:</span>     <span class="m">return</span> <span class="c">0</span><span class="f">;</span>
<a name="313" /><span class="False">     313:</span> <span class="f">}</span>
<a name="314" /><span class="False">     314:</span> 
<a name="315" /><span class="False">     315:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">clock_was_set_delayed</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="316" /><span class="False">     316:</span> 
<a name="317" /><span class="True">     317:</span> <span class="f">#</span><span class="n">endif</span>
<a name="318" /><span class="True">     318:</span> 
<a name="319" /><span class="True">     319:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">clock_was_set</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="320" /><span class="True">     320:</span> <span class="f">#</span><span class="n">ifdef</span> <a href="cpu.c_macros_ref.html#_Q09ORklHX1RJTUVSRkRfMA__"><span class="b">CONFIG_TIMERFD</span></a>
<a name="321" /><span class="True">     321:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">timerfd_clock_was_set</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="322" /><span class="False">     322:</span> <span class="f">#</span><span class="n">else</span>
<a name="323" /><span class="False">     323:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">timerfd_clock_was_set</span><span class="f">(</span><span class="m">void</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="324" /><span class="True">     324:</span> <span class="f">#</span><span class="n">endif</span>
<a name="325" /><span class="True">     325:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">hrtimers_resume</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="326" /><span class="True">     326:</span> 
<a name="327" /><span class="True">     327:</span> <span class="m">extern</span> <span class="b">ktime_t</span> <span class="b">ktime_get</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="328" /><span class="True">     328:</span> <span class="m">extern</span> <span class="b">ktime_t</span> <span class="b">ktime_get_real</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="329" /><span class="True">     329:</span> <span class="m">extern</span> <span class="b">ktime_t</span> <span class="b">ktime_get_boottime</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="330" /><span class="True">     330:</span> <span class="m">extern</span> <span class="b">ktime_t</span> <span class="b">ktime_get_monotonic_offset</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="331" /><span class="True">     331:</span> <span class="m">extern</span> <span class="b">ktime_t</span> <span class="b">ktime_get_clocktai</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="332" /><span class="True">     332:</span> <span class="m">extern</span> <span class="b">ktime_t</span> <span class="b">ktime_get_update_offsets</span><span class="f">(</span><span class="b">ktime_t</span> <span class="f">*</span><span class="b">offs_real</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="f">*</span><span class="b">offs_boot</span><span class="f">,</span>
<a name="333" /><span class="True">     333:</span>                      <span class="b">ktime_t</span> <span class="f">*</span><span class="b">offs_tai</span><span class="f">)</span><span class="f">;</span>
<a name="334" /><span class="True">     334:</span> 
<a name="335" /><span class="True">     335:</span> <a href="cpu.c_macros_ref.html#_REVDTEFSRV9QRVJfQ1BVXzA_"><span class="b">DECLARE_PER_CPU</span></a><span class="f">(</span><span class="m">struct</span> <span class="b">tick_device</span><span class="f">,</span> <span class="b">tick_cpu_device</span><span class="f">)</span><span class="f">;</span>
<a name="336" /><span class="True">     336:</span> 
<a name="337" /><span class="True">     337:</span> 
<a name="338" /><span class="True">     338:</span> <span class="k">/* Exported timer functions: */</span>
<a name="339" /><span class="True">     339:</span> 
<a name="340" /><span class="True">     340:</span> <span class="k">/* Initialize timers: */</span>
<a name="341" /><span class="True">     341:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">hrtimer_init</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">clockid_t</span> <span class="b">which_clock</span><span class="f">,</span>
<a name="342" /><span class="True">     342:</span>              <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">)</span><span class="f">;</span>
<a name="343" /><span class="True">     343:</span> 
<a name="344" /><span class="False">     344:</span> <span class="f">#</span><span class="n">ifdef</span> <span class="b">CONFIG_DEBUG_OBJECTS_TIMERS</span>
<a name="345" /><span class="False">     345:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">hrtimer_init_on_stack</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">clockid_t</span> <span class="b">which_clock</span><span class="f">,</span>
<a name="346" /><span class="False">     346:</span>                   <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">)</span><span class="f">;</span>
<a name="347" /><span class="False">     347:</span> 
<a name="348" /><span class="False">     348:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">destroy_hrtimer_on_stack</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="349" /><span class="True">     349:</span> <span class="f">#</span><span class="n">else</span>
<a name="350" /><span class="True">     350:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">hrtimer_init_on_stack</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span>
<a name="351" /><span class="True">     351:</span>                      <span class="b">clockid_t</span> <span class="b">which_clock</span><span class="f">,</span>
<a name="352" /><span class="True">     352:</span>                      <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">)</span>
<a name="353" /><span class="True">     353:</span> <span class="f">{</span>
<a name="354" /><span class="True">     354:</span>     <span class="b">hrtimer_init</span><span class="f">(</span><span class="b">timer</span><span class="f">,</span> <span class="b">which_clock</span><span class="f">,</span> <span class="b">mode</span><span class="f">)</span><span class="f">;</span>
<a name="355" /><span class="True">     355:</span> <span class="f">}</span>
<a name="356" /><span class="True">     356:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">void</span> <span class="b">destroy_hrtimer_on_stack</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span> <span class="f">{</span> <span class="f">}</span>
<a name="357" /><span class="True">     357:</span> <span class="f">#</span><span class="n">endif</span>
<a name="358" /><span class="True">     358:</span> 
<a name="359" /><span class="True">     359:</span> <span class="k">/* Basic timer operations: */</span>
<a name="360" /><span class="True">     360:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">hrtimer_start</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="b">tim</span><span class="f">,</span>
<a name="361" /><span class="True">     361:</span>              <span class="m">const</span> <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">)</span><span class="f">;</span>
<a name="362" /><span class="True">     362:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">hrtimer_start_range_ns</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="b">tim</span><span class="f">,</span>
<a name="363" /><span class="True">     363:</span>             <span class="m">unsigned</span> <span class="m">long</span> <span class="b">range_ns</span><span class="f">,</span> <span class="m">const</span> <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">)</span><span class="f">;</span>
<a name="364" /><span class="True">     364:</span> <span class="m">extern</span> <span class="m">int</span>
<a name="365" /><span class="True">     365:</span> <span class="b">__hrtimer_start_range_ns</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="b">tim</span><span class="f">,</span>
<a name="366" /><span class="True">     366:</span>              <span class="m">unsigned</span> <span class="m">long</span> <span class="b">delta_ns</span><span class="f">,</span>
<a name="367" /><span class="True">     367:</span>              <span class="m">const</span> <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">,</span> <span class="m">int</span> <span class="b">wakeup</span><span class="f">)</span><span class="f">;</span>
<a name="368" /><span class="True">     368:</span> 
<a name="369" /><span class="True">     369:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">hrtimer_cancel</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="370" /><span class="True">     370:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">hrtimer_try_to_cancel</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="371" /><span class="True">     371:</span> 
<a name="372" /><span class="True">     372:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">hrtimer_start_expires</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span>
<a name="373" /><span class="True">     373:</span>                         <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">)</span>
<a name="374" /><span class="True">     374:</span> <span class="f">{</span>
<a name="375" /><span class="True">     375:</span>     <span class="m">unsigned</span> <span class="m">long</span> <span class="b">delta</span><span class="f">;</span>
<a name="376" /><span class="True">     376:</span>     <span class="b">ktime_t</span> <span class="b">soft</span><span class="f">,</span> <span class="b">hard</span><span class="f">;</span>
<a name="377" /><span class="True">     377:</span>     <span class="b">soft</span> <span class="f">=</span> <span class="b">hrtimer_get_softexpires</span><span class="f">(</span><span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="378" /><span class="True">     378:</span>     <span class="b">hard</span> <span class="f">=</span> <span class="b">hrtimer_get_expires</span><span class="f">(</span><span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="379" /><span class="True">     379:</span>     <span class="b">delta</span> <span class="f">=</span> <a href="cpu.c_macros_ref.html#_a3RpbWVfdG9fbnNfMA__"><span class="b">ktime_to_ns</span></a><span class="f">(</span><a href="cpu.c_macros_ref.html#_a3RpbWVfc3ViXzA_"><span class="b">ktime_sub</span></a><span class="f">(</span><span class="b">hard</span><span class="f">,</span> <span class="b">soft</span><span class="f">)</span><span class="f">)</span><span class="f">;</span>
<a name="380" /><span class="True">     380:</span>     <span class="m">return</span> <span class="b">hrtimer_start_range_ns</span><span class="f">(</span><span class="b">timer</span><span class="f">,</span> <span class="b">soft</span><span class="f">,</span> <span class="b">delta</span><span class="f">,</span> <span class="b">mode</span><span class="f">)</span><span class="f">;</span>
<a name="381" /><span class="True">     381:</span> <span class="f">}</span>
<a name="382" /><span class="True">     382:</span> 
<a name="383" /><span class="True">     383:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">hrtimer_restart</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="384" /><span class="True">     384:</span> <span class="f">{</span>
<a name="385" /><span class="True">     385:</span>     <span class="m">return</span> <span class="b">hrtimer_start_expires</span><span class="f">(</span><span class="b">timer</span><span class="f">,</span> <span class="b">HRTIMER_MODE_ABS</span><span class="f">)</span><span class="f">;</span>
<a name="386" /><span class="True">     386:</span> <span class="f">}</span>
<a name="387" /><span class="True">     387:</span> 
<a name="388" /><span class="True">     388:</span> <span class="k">/* Query timers: */</span>
<a name="389" /><span class="True">     389:</span> <span class="m">extern</span> <span class="b">ktime_t</span> <span class="b">hrtimer_get_remaining</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span><span class="f">;</span>
<a name="390" /><span class="True">     390:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">hrtimer_get_res</span><span class="f">(</span><span class="m">const</span> <span class="b">clockid_t</span> <span class="b">which_clock</span><span class="f">,</span> <span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">tp</span><span class="f">)</span><span class="f">;</span>
<a name="391" /><span class="True">     391:</span> 
<a name="392" /><span class="True">     392:</span> <span class="m">extern</span> <span class="b">ktime_t</span> <span class="b">hrtimer_get_next_event</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="393" /><span class="True">     393:</span> 
<a name="394" /><span class="True">     394:</span> <span class="k">/*</span>
<a name="395" /><span class="True">     395:</span> <span class="k"> * A timer is active, when it is enqueued into the rbtree or the</span>
<a name="396" /><span class="True">     396:</span> <span class="k"> * callback function is running or it&apos;s in the state of being migrated</span>
<a name="397" /><span class="True">     397:</span> <span class="k"> * to another cpu.</span>
<a name="398" /><span class="True">     398:</span> <span class="k"> */</span>
<a name="399" /><span class="True">     399:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">hrtimer_active</span><span class="f">(</span><span class="m">const</span> <span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="400" /><span class="True">     400:</span> <span class="f">{</span>
<a name="401" /><span class="True">     401:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">state</span> <span class="f">!=</span> <a href="cpu.c_macros_ref.html#_SFJUSU1FUl9TVEFURV9JTkFDVElWRV8w"><span class="b">HRTIMER_STATE_INACTIVE</span></a><span class="f">;</span>
<a name="402" /><span class="True">     402:</span> <span class="f">}</span>
<a name="403" /><span class="True">     403:</span> 
<a name="404" /><span class="True">     404:</span> <span class="k">/*</span>
<a name="405" /><span class="True">     405:</span> <span class="k"> * Helper function to check, whether the timer is on one of the queues</span>
<a name="406" /><span class="True">     406:</span> <span class="k"> */</span>
<a name="407" /><span class="True">     407:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">hrtimer_is_queued</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="408" /><span class="True">     408:</span> <span class="f">{</span>
<a name="409" /><span class="True">     409:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">state</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_SFJUSU1FUl9TVEFURV9FTlFVRVVFRF8w"><span class="b">HRTIMER_STATE_ENQUEUED</span></a><span class="f">;</span>
<a name="410" /><span class="True">     410:</span> <span class="f">}</span>
<a name="411" /><span class="True">     411:</span> 
<a name="412" /><span class="True">     412:</span> <span class="k">/*</span>
<a name="413" /><span class="True">     413:</span> <span class="k"> * Helper function to check, whether the timer is running the callback</span>
<a name="414" /><span class="True">     414:</span> <span class="k"> * function</span>
<a name="415" /><span class="True">     415:</span> <span class="k"> */</span>
<a name="416" /><span class="True">     416:</span> <span class="m">static</span> <span class="m">inline</span> <span class="m">int</span> <span class="b">hrtimer_callback_running</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">)</span>
<a name="417" /><span class="True">     417:</span> <span class="f">{</span>
<a name="418" /><span class="True">     418:</span>     <span class="m">return</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">state</span> <span class="f">&amp;</span> <a href="cpu.c_macros_ref.html#_SFJUSU1FUl9TVEFURV9DQUxMQkFDS18w"><span class="b">HRTIMER_STATE_CALLBACK</span></a><span class="f">;</span>
<a name="419" /><span class="True">     419:</span> <span class="f">}</span>
<a name="420" /><span class="True">     420:</span> 
<a name="421" /><span class="True">     421:</span> <span class="k">/* Forward a hrtimer so it expires after now: */</span>
<a name="422" /><span class="True">     422:</span> <span class="m">extern</span> <span class="b">u64</span>
<a name="423" /><span class="True">     423:</span> <span class="b">hrtimer_forward</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="b">now</span><span class="f">,</span> <span class="b">ktime_t</span> <span class="b">interval</span><span class="f">)</span><span class="f">;</span>
<a name="424" /><span class="True">     424:</span> 
<a name="425" /><span class="True">     425:</span> <span class="k">/* Forward a hrtimer so it expires after the hrtimer&apos;s current now */</span>
<a name="426" /><span class="True">     426:</span> <span class="m">static</span> <span class="m">inline</span> <span class="b">u64</span> <span class="b">hrtimer_forward_now</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer</span> <span class="f">*</span><span class="b">timer</span><span class="f">,</span>
<a name="427" /><span class="True">     427:</span>                       <span class="b">ktime_t</span> <span class="b">interval</span><span class="f">)</span>
<a name="428" /><span class="True">     428:</span> <span class="f">{</span>
<a name="429" /><span class="True">     429:</span>     <span class="m">return</span> <span class="b">hrtimer_forward</span><span class="f">(</span><span class="b">timer</span><span class="f">,</span> <span class="b">timer</span><span class="f">-&gt;</span><span class="b">base</span><span class="f">-&gt;</span><span class="b">get_time</span><span class="f">(</span><span class="f">)</span><span class="f">,</span> <span class="b">interval</span><span class="f">)</span><span class="f">;</span>
<a name="430" /><span class="True">     430:</span> <span class="f">}</span>
<a name="431" /><span class="True">     431:</span> 
<a name="432" /><span class="True">     432:</span> <span class="k">/* Precise sleep: */</span>
<a name="433" /><span class="True">     433:</span> <span class="m">extern</span> <span class="m">long</span> <span class="b">hrtimer_nanosleep</span><span class="f">(</span><span class="m">struct</span> <span class="b">timespec</span> <span class="f">*</span><span class="b">rqtp</span><span class="f">,</span>
<a name="434" /><span class="True">     434:</span>                   <span class="m">struct</span> <span class="b">timespec</span> <a href="cpu.c_macros_ref.html#_X191c2VyXzA_"><span class="b">__user</span></a> <span class="f">*</span><span class="b">rmtp</span><span class="f">,</span>
<a name="435" /><span class="True">     435:</span>                   <span class="m">const</span> <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">,</span>
<a name="436" /><span class="True">     436:</span>                   <span class="m">const</span> <span class="b">clockid_t</span> <span class="b">clockid</span><span class="f">)</span><span class="f">;</span>
<a name="437" /><span class="True">     437:</span> <span class="m">extern</span> <span class="m">long</span> <span class="b">hrtimer_nanosleep_restart</span><span class="f">(</span><span class="m">struct</span> <span class="b">restart_block</span> <span class="f">*</span><span class="b">restart_block</span><span class="f">)</span><span class="f">;</span>
<a name="438" /><span class="True">     438:</span> 
<a name="439" /><span class="True">     439:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">hrtimer_init_sleeper</span><span class="f">(</span><span class="m">struct</span> <span class="b">hrtimer_sleeper</span> <span class="f">*</span><span class="b">sl</span><span class="f">,</span>
<a name="440" /><span class="True">     440:</span>                  <span class="m">struct</span> <span class="b">task_struct</span> <span class="f">*</span><span class="b">tsk</span><span class="f">)</span><span class="f">;</span>
<a name="441" /><span class="True">     441:</span> 
<a name="442" /><span class="True">     442:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">schedule_hrtimeout_range</span><span class="f">(</span><span class="b">ktime_t</span> <span class="f">*</span><span class="b">expires</span><span class="f">,</span> <span class="m">unsigned</span> <span class="m">long</span> <span class="b">delta</span><span class="f">,</span>
<a name="443" /><span class="True">     443:</span>                         <span class="m">const</span> <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">)</span><span class="f">;</span>
<a name="444" /><span class="True">     444:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">schedule_hrtimeout_range_clock</span><span class="f">(</span><span class="b">ktime_t</span> <span class="f">*</span><span class="b">expires</span><span class="f">,</span>
<a name="445" /><span class="True">     445:</span>         <span class="m">unsigned</span> <span class="m">long</span> <span class="b">delta</span><span class="f">,</span> <span class="m">const</span> <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">,</span> <span class="m">int</span> <span class="b">clock</span><span class="f">)</span><span class="f">;</span>
<a name="446" /><span class="True">     446:</span> <span class="m">extern</span> <span class="m">int</span> <span class="b">schedule_hrtimeout</span><span class="f">(</span><span class="b">ktime_t</span> <span class="f">*</span><span class="b">expires</span><span class="f">,</span> <span class="m">const</span> <span class="m">enum</span> <span class="b">hrtimer_mode</span> <span class="b">mode</span><span class="f">)</span><span class="f">;</span>
<a name="447" /><span class="True">     447:</span> 
<a name="448" /><span class="True">     448:</span> <span class="k">/* Soft interrupt function to run the hrtimer queues: */</span>
<a name="449" /><span class="True">     449:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">hrtimer_run_queues</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="450" /><span class="True">     450:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">hrtimer_run_pending</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="451" /><span class="True">     451:</span> 
<a name="452" /><span class="True">     452:</span> <span class="k">/* Bootup initialization: */</span>
<a name="453" /><span class="True">     453:</span> <span class="m">extern</span> <span class="m">void</span> <a href="cpu.c_macros_ref.html#_X19pbml0XzA_"><span class="b">__init</span></a> <span class="b">hrtimers_init</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="454" /><span class="True">     454:</span> 
<a name="455" /><span class="False">     455:</span> <span class="f">#</span><span class="n">if</span> <a href="cpu.c_macros_ref.html#_QklUU19QRVJfTE9OR18w"><span class="b">BITS_PER_LONG</span></a> <span class="f">&lt;</span> <span class="c">64</span>
<a name="456" /><span class="False">     456:</span> <span class="m">extern</span> <span class="b">u64</span> <a href="cpu.c_macros_noref.html#_a3RpbWVfZGl2bnNfMA__"><span class="b">ktime_divns</span></a><span class="f">(</span><span class="m">const</span> <span class="b">ktime_t</span> <span class="b">kt</span><span class="f">,</span> <span class="b">s64</span> <span class="b">div</span><span class="f">)</span><span class="f">;</span>
<a name="457" /><span class="True">     457:</span> <span class="f">#</span><span class="n">else</span> <span class="k">/* BITS_PER_LONG &lt; 64 */</span>
<a name="458" /><span class="True">     458:</span> <span class="f">#</span> <span class="n">define</span> <a href="cpu.c_macros_noref.html#_a3RpbWVfZGl2bnNfMA__"><span class="b">ktime_divns</span></a><span class="f">(</span><span class="b">kt</span><span class="f">,</span> <span class="b">div</span><span class="f">)</span>        <span class="f">(</span><span class="b">u64</span><span class="f">)</span><span class="f">(</span><span class="f">(</span><span class="b">kt</span><span class="f">)</span><span class="f">.</span><span class="b">tv64</span> <span class="f">/</span> <span class="f">(</span><span class="b">div</span><span class="f">)</span><span class="f">)</span>
<a name="459" /><span class="True">     459:</span> <span class="f">#</span><span class="n">endif</span>
<a name="460" /><span class="True">     460:</span> 
<a name="461" /><span class="True">     461:</span> <span class="k">/* Show pending timers: */</span>
<a name="462" /><span class="True">     462:</span> <span class="m">extern</span> <span class="m">void</span> <span class="b">sysrq_timer_list_show</span><span class="f">(</span><span class="m">void</span><span class="f">)</span><span class="f">;</span>
<a name="463" /><span class="True">     463:</span> 
<a name="464" /><span class="True">     464:</span> <span class="f">#</span><span class="n">endif</span>
<a name="465" /><span class="True">     465:</span> </pre>
  </body>
</html>
